package main.java.tomcat;

import main.java.servlet.LoginServlet;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.startup.Tomcat;

import java.io.File;


public class TomcatServer {

    public static void main(String[] args) {
        start();
    }

    public static void start() {
        /**
         * 实际项目中读取properties文件获得配置，
         * 这里就不拓展了，直接硬编码
         */

        Tomcat tomcat = new Tomcat();

        // 设置Tomcat的端口号
//        tomcat.setPort(8080);
        // 是否设置Tomcat自动部署
//        tomcat.getHost().setAutoDeploy(false);
        // 创建上下文
        StandardContext standardContext = new StandardContext();
        // 设置项目名
        standardContext.setPath("/zhou_sjj");
        // 监听上下文
        standardContext.addLifecycleListener(new Tomcat.FixContextListener());
        // 向tomcat容器对象添加上下文配置
        tomcat.getHost().addChild(standardContext);
        // 创建Servlet
        tomcat.addServlet("/zhou_sjj", "loginServlet", new LoginServlet());
        // Servlet映射
        standardContext.addServletMappingDecoded("/login", "loginServlet");

        // 端口


        try {
//            String docBase = "src/main/webapp/";
            String docBase = "C:\\Users\\Administrator\\IdeaProjects\\zhou_sjj\\webapp\\";

            String contextPath = "/";
            /**
             * tomcat加入web工程
             *
             * host:缺省默认为localhost
             * contextPath:在浏览器中访问项目的根路径
             * 例：localhost:port/{contextPath}/xx
             * docBase：项目中webapp所在路径
             *
             */
//            tomcat.addWebapp(host, contextPath, docBase)
            File file = new File(docBase);
//            String fileStr = file.getAbsolutePath();
//            tomcat.addWebapp(contextPath, file.getAbsolutePath());
//            tomcat.addContext(contextPath, file.getAbsolutePath());
            tomcat.start();
            System.out.println("tomcat服务启动成功。。");
            tomcat.getServer().await();
        } catch (Exception e) {
            System.out.println("tomcat服务启动失败。。");
            e.printStackTrace();
        }
    }
}
